/**
 * 时区问题修复测试
 * 验证任务详情页面的时间解析是否正确
 */

console.log('🔍 测试时区问题修复...')
console.log('===============================')

// 模拟数据库返回的数据（UTC时间）
const mockTaskFromDB = {
  id: 'test-task',
  title: '明天下午4点半要给小朋友买礼物',
  dueDate: '2025-08-31T08:30:00.000Z', // UTC时间，对应北京时间 16:30
  reminder_minutes: 30
}

console.log('📊 数据库存储的时间 (UTC):')
console.log(`  dueDate: ${mockTaskFromDB.dueDate}`)

// 模拟任务详情页面的时间解析逻辑（修复后）
function parseTaskTime(foundTask) {
  let dueTime = ''
  let dueDate = foundTask.dueDate
  
  // 如果dueDate包含时间信息，则分离日期和时间
  if (foundTask.dueDate && foundTask.dueDate.includes('T')) {
    const dateTime = new Date(foundTask.dueDate)
    if (!isNaN(dateTime.getTime())) {
      // 使用本地时间而不是UTC时间
      const year = dateTime.getFullYear()
      const month = (dateTime.getMonth() + 1).toString().padStart(2, '0')
      const day = dateTime.getDate().toString().padStart(2, '0')
      const hours = dateTime.getHours().toString().padStart(2, '0')
      const minutes = dateTime.getMinutes().toString().padStart(2, '0')
      
      dueDate = `${year}-${month}-${day}` // YYYY-MM-DD (本地日期)
      dueTime = `${hours}:${minutes}` // HH:mm (本地时间)
    }
  }
  
  return {
    ...foundTask,
    dueDate,
    dueTime,
    reminderMinutes: foundTask.reminder_minutes || 30
  }
}

// 模拟旧的解析逻辑（有时区问题）
function parseTaskTimeOld(foundTask) {
  let dueTime = ''
  let dueDate = foundTask.dueDate
  
  if (foundTask.dueDate && foundTask.dueDate.includes('T')) {
    const dateTime = new Date(foundTask.dueDate)
    if (!isNaN(dateTime.getTime())) {
      dueDate = dateTime.toISOString().split('T')[0] // YYYY-MM-DD
      dueTime = dateTime.toTimeString().slice(0, 5) // HH:mm (这里有问题)
    }
  }
  
  return {
    ...foundTask,
    dueDate,
    dueTime
  }
}

console.log('\n⚙️ 时间解析对比:')

// 旧逻辑结果
const oldResult = parseTaskTimeOld(mockTaskFromDB)
console.log('\n❌ 旧逻辑 (有时区问题):')
console.log(`  解析的日期: ${oldResult.dueDate}`)
console.log(`  解析的时间: ${oldResult.dueTime}`)
console.log(`  显示效果: ${oldResult.dueDate} ${oldResult.dueTime}`)

// 新逻辑结果
const newResult = parseTaskTime(mockTaskFromDB)
console.log('\n✅ 新逻辑 (修复时区):')
console.log(`  解析的日期: ${newResult.dueDate}`)
console.log(`  解析的时间: ${newResult.dueTime}`)
console.log(`  显示效果: ${newResult.dueDate} ${newResult.dueTime}`)

console.log('\n🎯 预期结果验证:')
console.log(`  期望时间: 16:30 (北京时间)`)
console.log(`  实际时间: ${newResult.dueTime}`)
console.log(`  结果: ${newResult.dueTime === '16:30' ? '✅ 正确' : '❌ 错误'}`)

console.log('\n📱 用户界面显示:')
console.log('  任务创建页面: 2025-08-31 16:30 ✅')
console.log(`  任务详情页面: ${newResult.dueDate} ${newResult.dueTime} ${newResult.dueTime === '16:30' ? '✅' : '❌'}`)

if (newResult.dueTime === '16:30') {
  console.log('\n🎉 时区问题修复成功！')
  console.log('现在任务创建和任务详情页面显示的时间一致了')
} else {
  console.log('\n⚠️ 时区问题仍然存在，需要进一步调试')
}

console.log('\n===============================')
